package controllers;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;
import models.*;
import views.*;
public class CustomerController extends AbstractController {
private CustomerView customerView;
public CustomerController(CustomerView customerView, boolean hasBackButton) {
super(customerView, hasBackButton);
this.customerView = customerView;
customerView.setSearchButtonActionListener(new SearchButtonActionListener());
customerView.setBuyButtonActionListener(new BuyButtonActionListener());
customerView.setHistoryButtonActionListener(new HistoryButtonActionListener());
refresh();
}
public void refresh() {
for (CustomerItem ci : customerView.getItems()) {
ci.setDownButtonActionListener(new DownButtonActionListener(ci));
ci.setUpButtonActionListener(new UpButtonActionListener(ci));
}
}
private class DownButtonActionListener implements ActionListener {
private CustomerItem ci;
public DownButtonActionListener(CustomerItem ci) {
this.ci = ci;
}
public void actionPerformed(ActionEvent e) {
if (ci.getQuantity() - 1 >= 0) {
ci.setQuantity(ci.getQuantity() - 1);
ci.refresh();
}
}
}
private class UpButtonActionListener implements ActionListener {
private CustomerItem ci;
public UpButtonActionListener(CustomerItem ci) {
this.ci = ci;
}
public void actionPerformed(ActionEvent e) {
if (ci.getProductStock().getStock() - ci.getQuantity() - 1 >= 0) {
ci.setQuantity(ci.getQuantity() + 1);
ci.refresh();
}
}
}
private class SearchButtonActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
ArrayList<CustomerItem> items = new ArrayList<CustomerItem>();
for (ProductStock ps : Warehouse.getInstance().filter(customerView.getSearch().getText())) {
items.add(new CustomerItem(ps));
}
customerView.setItems(items);
customerView.refresh();
refresh();
}
}
private class BuyButtonActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
boolean someProductsWereBought = false;
int ID = (int) (Math.random() * 100);
Status status = new Status(System.currentTimeMillis(), 0, 0, 0);
ArrayList<OrderItem> items = new ArrayList<OrderItem>();
for (CustomerItem ci : customerView.getItems()) {
if (ci.getQuantity() != 0) {
someProductsWereBought = true;
items.add(new OrderItem(ci.getProductStock().getProduct(), ci.getQuantity()));
Warehouse.getInstance().increaseDecreaseStock(new ProductStock(ci.getProductStock().getProduct(),
(ci.getProductStock().getStock() - ci.getQuantity())));
}
}
if (someProductsWereBought != false)
OPDept.getInstance().addOrder(new Order(ID, status, items));
ArrayList<CustomerItem> customerItems = new ArrayList<CustomerItem>();
for (ProductStock ps : Warehouse.getInstance().getProductStock()) {
customerItems.add(new CustomerItem(ps));
}
customerView.setItems(customerItems);
customerView.refresh();
refresh();
}
}
private class HistoryButtonActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
new HistoryController(new HistoryView("History"), true);
}
}
}